package tp.algo2.futbol

import org.junit.Before
import org.junit.Test
import org.junit.Assert
import static org.mockito.Matchers.*
import static org.mockito.Mockito.*

class TestEnvioDeMails {
	
	Partido partido1
	Estandar estandar1
	Jugador j1
	Jugador j2
	Jugador j3
	Jugador j4
	Jugador j5
	Jugador j6
	Jugador j7
	Jugador j8
	Jugador j9
	Jugador j10
	NotificadorXMail notificacion
	Mail mail
	
	

	@Before
	def void pruebaJugadores() {

		j1 = new Jugador
		j2 = new Jugador
		j3 = new Jugador
		j4 = new Jugador
		j5 = new Jugador
		j6 = new Jugador
		j7 = new Jugador
		j8 = new Jugador
		j9 = new Jugador
		j10 = new Jugador
		estandar1 = new Estandar
		partido1 = new Partido
		notificacion = new NotificadorXMail
		partido1.agregarObserver(notificacion)
		
		
	}

	@Test
	def void TestJugadores() {
		var mockedNotificacionXMail = mock(typeof(MailSender))
		stubVoid(mockedNotificacionXMail).toThrow(new MiExcepcion("no envia mail")).on().sendMail(mail)
			

		notificacion.mailSender = mockedNotificacionXMail

		j1.tipoJugador = estandar1
		j2.tipoJugador = estandar1 
		j3.tipoJugador = estandar1
		j4.tipoJugador = estandar1
		j5.tipoJugador = estandar1
		j6.tipoJugador = estandar1
		j7.tipoJugador = estandar1
		j8.tipoJugador = estandar1
		j9.tipoJugador = estandar1
		j10.tipoJugador = estandar1

		partido1.agregarJugador(j1)
		partido1.agregarJugador(j2)
		partido1.agregarJugador(j3)
		partido1.agregarJugador(j4)
		partido1.agregarJugador(j5)
		partido1.agregarJugador(j6)
		partido1.agregarJugador(j7)
		partido1.agregarJugador(j8)
		partido1.agregarJugador(j9)
		partido1.agregarJugador(j10)
		//partido1.partidoCompleto


		Assert::assertEquals(partido1.cantidadDeJugadores, 10)
		Assert::assertTrue(!partido1.partidoIncompleto)
		verify(mockedNotificacionXMail).sendMail(any(typeof(Mail)))
				
		

	}
}
